package com.qfedu.lc.user.controller;


import cn.hutool.core.util.StrUtil;
import com.qfedu.lc.common.config.RedisKeyConfig;
import com.qfedu.lc.common.param.UserVipAdd;
import com.qfedu.lc.common.vo.R;
import com.qfedu.lc.user.entity.User;
import com.qfedu.lc.user.service.VipService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;

/**
 * <p>
 * 8.用户收费会员表 前端控制器
 * </p>
 *
 * @author wgz
 * @since 2024-01-29
 */
@RestController
@RequestMapping("/user/vip")
public class VipController {

    @Autowired
    private RedisTemplate redisTemplate;

    @Autowired
    private VipService vipService;

    /**
     * 购买vip 会员接口
     * @param userVipAdd
     * @return
     */
    @PostMapping("/save")
    public R save(@RequestBody UserVipAdd userVipAdd, HttpServletRequest httpServletRequest){

        // 1.判断是否为空
        if (userVipAdd==null ){
            return R.fail("参数错误");
        }

        // 2.根据 vip 类型得到 vip的支付金额
        int money = 0;
        switch (userVipAdd.getVipType()){
            case 1: // 年卡
                money = 365;
                break;
            case 2:  // 银卡
                money = 998;
                break;
            case 3: // 金卡
                money  = 10000;
                break;
        }
        userVipAdd.setMoney(money);

        // 获取用户id
        String token = httpServletRequest.getHeader("Lctoken");
        User user = (User) redisTemplate.opsForValue().get(RedisKeyConfig.LOGIN_TOKEN+token);
        userVipAdd.setUserId(user.getId());


        // 3.通过支付类型调用不同的支付业务

        switch (userVipAdd.getPayType()){
            case 1:// 钱包
                return  vipService.buyVipUseWallet(userVipAdd) ;

            case 2: // 支付宝
                break;

            case 3: // 微信
                break;

        }


         return R.fail("购买vip 失败");

    }
}

